<?php

defined('ROOT') or die('No direct script access.');

abstract class CController extends CBaseObject
{

    public function execute($prm_controller, $prm_action = "", $params = "")
    {
        include("config.php");
        $filename = $config['APPPATH'] . "/controllers/" . $prm_controller . ".php";

        if (file_exists($filename)) {
            include_once($filename);
            $controller_name = $prm_controller;
            $controller_action = ($prm_action == "") ? "index" : $prm_action;
            return call_user_func(array("C" . $controller_name, $controller_action), $params);
        }
    }

    public function redirect($params, $prm_array = 0)
    {
        include ("config.php");

        $str_adds = '';
        if ($prm_array != 0) {
            if (substr($params, -1) != '/') {
                $str_adds = '/';
            }
            $str_adds .= self::array_to_path($prm_array);
        }
        /* Если заголовки еще не отправлены, добавить */
        if (!headers_sent()) {
            header("Location: http://" . $_SERVER['HTTP_HOST'] . $config['BASEPATH'] . $params . $str_adds);
            exit;
        }

        /* Пример использования опциональных параметров, добавленных в PHP 4.3.0
        * Обратите внимание, что $filename и $linenum передаются для последующего
        * использования. Не устанавливайте их предварительно!
         */
        if (!headers_sent($filename, $linenum)) {
            header("Location: http://" . $_SERVER['HTTP_HOST'] . $config['BASEPATH'] . $params . $str_adds);
            exit;

            /**
             * Обычно здесь идет обработка ошибок.
             */

        } else {
            echo "Заголовки уже отправлены в $filename на строке $linenum\n Редирект невозможен.";
            exit;
        }
    }

}

?>